package cn.gok.day7;

import java.lang.reflect.Method;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * @ClassName Test
 * @Description TODO
 * @Author HP
 * @Date 10:43 2022/7/12
 * @Version 1.0
 **/
public class Test {
    public static void main(String[] args)  {
//        List<BigInteger> list= Arrays.asList(new BigInteger("10"),
//                new BigInteger("20"),
//                new BigInteger("30"));
//        BigInteger r1=list.get(0).add(list.get(1)).add(list.get(2));
//        BigInteger r2=list.stream().reduce(new BigInteger("0"),(b1,b2)->{return b1.add(b2);});
//        BigInteger r3=list.stream().reduce(BigInteger.ZERO,BigInteger::add);
//        System.out.println(r1+" "+r2+" "+r3);
//        Map map=new LinkedHashMap();
//        map.put(1,"o");
//        map.put(2,"s");
//        map.put(3,"c");
//        System.out.println(map);
//
////        1.主动加载
//        try {
//            System.out.println("主动加载中");
//            Class a=Class.forName("cn.gok.day7.Test$A");
//            System.out.println("===========静态代码块执行完毕===========");
//            System.out.println("被动加载中");
//            Class a2=A.class;
//            Class a3=new A().getClass();
//            System.out.println("证明唯一性");
//            System.out.println(a==a2);
//            System.out.println(a3==a2);
//        }catch (ClassNotFoundException e){
//            System.out.println("失败");
//        }
        A a=new A();
//        会包含父类的方法
//        for (Method m:a.getClass().getMethods()) {
//            System.out.println(m.getName()+"参数个数："+m.getParameterCount()+"返回值类型："+m.getReturnType()+"可访问性："+m.getModifiers());
//        }
        for (Method m:a.getClass().getDeclaredMethods()) {
            System.out.println(m.getName()+"参数个数："+m.getParameterCount()+"返回值类型："+m.getReturnType()+"可访问性："+m.getModifiers());
        }


    }

static  class A{
        static {
            System.out.println("我是静态代码块，我正在执行...");
        }

        private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
}
